home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 25 / AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / Updates / HD-Installer / jst_dev / sources / OSEmu / intuition.s < prev    next >
Text File  |  2000-04-12  |  7KB  |  292 lines

  1. * $Id: intuition.s 1.1 1999/02/03 04:10:30 jotd Exp jotd $
  2. **************************************************************************
  3. *   INTUITION-LIBRARY                                                    *
  4. **************************************************************************
  5. **************************************************************************
  6. *   INITIALIZATION                                                       *
  7. **************************************************************************
  8.  
  9. REMEMBER_SIZE = $4000    ; 16K (2000 allocations)
  10.  
  11. INTUIINIT    move.l    _intbase,d0
  12.         beq    .init
  13.         rts
  14.  
  15. .init        move.l    #-_LVOBltBitMapRastPort,d0
  16.         move.l    #242,d1
  17.         lea    _intname,a0
  18.         bsr    _InitLibrary
  19.         move.l    d0,a0
  20.         move.l    d0,_intbase
  21.         
  22.         patch    _LVOCloseWorkBench(a0),CLOSEWB(pc)
  23.         patch    _LVOClearDMRequest(A0),MYRTZ(PC)
  24.         patch    _LVOOpenWindow(A0),_OPENWINDOW(PC)
  25.         patch    _LVOCloseWindow(A0),_CLOSEWINDOW(PC)
  26.         patch    _LVOCloseScreen(A0),MYRTS(PC)        ; -- added by JOTD
  27.         patch    _LVOShowTitle(A0),MYRTS(PC)        ; -- added by JOTD
  28.         patch    _LVOClearPointer(A0),MYRTS(PC)        ; -- added by JOTD
  29.         patch    _LVOClearMenuStrip(A0),MYRTS(PC)    ; -- added by JOTD
  30.         patch    _LVOOpenWorkBench(A0),_OPENWB(PC)    ; -- added by JOTD
  31.         patch    _LVOAlohaWorkbench(A0),MYRTS(PC)    ; -- added by JOTD
  32.         patch    _LVORethinkDisplay(A0),MYRTS(PC)    ; -- added by JOTD
  33.         patch    _LVORemakeDisplay(A0),MYRTS(PC)        ; -- added by JOTD
  34.         patch    _LVOCurrentTime(A0),_CURRENTTIME(PC)    ; -- added by JOTD
  35.         patch    _LVOGetPrefs(A0),_GETPREFS(PC)        ; -- added by JOTD
  36.         patch    _LVOSetPrefs(A0),_SETPREFS(PC)        ; -- dummy, JOTD
  37.         patch    _LVOOpenScreen(A0),_OPENSCREEN(PC)    ; -- dummy, JOTD
  38. ;        patch    _LVOSetPointer(A0),_SETPOINTER(PC)    ; -- dummy, JOTD
  39.         patch    _LVOLockIBase(A0),_LOCKIBASE(PC)
  40.         patch    _LVOAllocRemember(A0),_ALLOCREMEMBER(PC)
  41.         patch    _LVOFreeRemember(A0),_FREEREMEMBER(PC)
  42.  
  43.         movem.l    D0-A6,-(A7)
  44.  
  45.         ; allocate memory for AllocRemember/FreeRemember functions
  46.         ; added by JOTD
  47.  
  48.         move.l    #REMEMBER_SIZE,D0
  49.         move.l    #MEMF_CLEAR,D1
  50.         bsr    ALLOCM
  51.         move.l    D0,REMEMBER_TABLE
  52.         beq.b    .fail        ; could not allocate the memory!
  53.  
  54.         add.l    #REMEMBER_SIZE,D0
  55.         move.l    D0,REMEMBER_TOP
  56.  
  57.         movem.l    (A7)+,D0-A6
  58.         rts
  59.  
  60. .fail        pea    _LVOOpenLibrary
  61.         pea    _execname
  62.         bra    _emufail
  63.     
  64. **************************************************************************
  65. *   SCREEN FUNCTIONS                                                     *
  66. **************************************************************************
  67.  
  68. _SETPOINTER:
  69.     rts
  70.  
  71. _OPENSCREEN:
  72.     move.l    A0,D0    ; returns user pointer (dummy function!)
  73.     rts
  74.  
  75. _OPENWB:
  76.     moveq.l    #1,D0    ; non-NULL
  77.     rts
  78.  
  79. ISCLOSED
  80.     dc.l    0    ; added by JOTD
  81.  
  82. ;since there is no workbench, closing should awlays return 0 for success
  83. ;but some programs loop until the routine returns false (ok the wb is closed)
  84.  
  85. CLOSEWB
  86.     movem.l    A0,-(A7)
  87.     lea    ISCLOSED(pc),A0
  88.     move.l    (A0),D0        ; first time returns 0, and 1 afterwards
  89.     move.l    #1,(A0)
  90.     movem.l    (A7)+,A0
  91.     RTS
  92.  
  93. _SETPREFS:
  94.     move.l    A0,D0    
  95.     rts
  96.  
  97. ; < A0: PrefBuffer
  98. ; < D0: Size
  99. ; > D0: returns PrefBuffer
  100.  
  101. _GETPREFS
  102.     lea    prefsdata(pc),A1
  103.     move.l    D0,D1
  104.     move.l    D0,A0
  105.     subq.l    #1,D1
  106. .copy
  107.     move.b    (A1)+,(A0)+
  108.     dbf    D1,.copy
  109.     rts
  110.  
  111. _OPENWINDOW    MOVE.L    A0,-(A7)
  112.         MOVE.L    #$84,D0
  113.         MOVEQ.L    #0,D1
  114.         BSR.W    ALLOCM
  115.         MOVE.L    D0,A1
  116.         MOVE.L    (A7)+,A0
  117.         MOVE.L    (A0),wd_LeftEdge(A1)
  118.         MOVE.L    nw_Width(A0),wd_Width(A1)
  119.         MOVE.W    nw_DetailPen(A0),wd_DetailPen(A1)
  120.         MOVE.L    nw_IDCMPFlags(A0),wd_IDCMPFlags(A1)
  121.         MOVE.L    nw_Flags(A0),wd_Flags(A1)
  122.         MOVE.L    nw_FirstGadget(A0),wd_FirstGadget(A1)
  123.         MOVE.L    nw_CheckMark(A0),wd_CheckMark(A1)
  124.         MOVE.L    nw_Title(A0),wd_Title(A1)
  125.         MOVE.L    nw_Screen(A0),wd_WScreen(A1)
  126. ;        MOVE.L    nw_BitMap(A0),wd_    ;rastport ignored
  127.         MOVE.L    nw_MinWidth(A0),wd_MinWidth(A1)
  128.         MOVE.L    nw_MaxWidth(A0),wd_MaxWidth(A1)
  129.         RTS
  130.  
  131. _CLOSEWINDOW    MOVE.L    A0,A1
  132.         MOVE.L    #$84,D0
  133.         BSR.W    FREEM
  134.         RTS
  135.  
  136. _LOCKIBASE    MOVE.L    #'MYLK',D0
  137.         RTS
  138.         
  139. **************************************************************************
  140. *   ICON-LIBRARY                                                         *
  141. **************************************************************************
  142. **************************************************************************
  143. *   INITIALIZATION                                                       *
  144. **************************************************************************
  145.  
  146. ILIBINIT    move.l    _ilibbase,d0
  147.         beq    .init
  148.         rts
  149.  
  150. .init        move.l    #-_LVOBumpRevision,d0
  151.         move.l    #LIB_SIZE,D1
  152.         lea    _ilibname,a0
  153.         bsr    _InitLibrary
  154.         move.l    d0,a0
  155.         move.l    d0,_ilibbase
  156.         
  157. ;        patch    _LVOCloseWorkBench(a0),CLOSEWB(pc)
  158.  
  159.         rts
  160.  
  161.  
  162. **************************************************************************
  163. *   LAYERS-LIBRARY                                                       *
  164. **************************************************************************
  165. **************************************************************************
  166. *   INITIALIZATION                                                       *
  167. **************************************************************************
  168.  
  169. LAYERSINIT    move.l    _laybase,d0
  170.         beq    .init
  171.         rts
  172.  
  173. .init        move.l    #-_LVOMoveLayerInFrontOf,d0
  174.         move.l    #LIB_SIZE,D1
  175.         lea    _layname,a0
  176.         bsr    _InitLibrary
  177.         move.l    d0,a0
  178.         move.l    d0,_laybase
  179.         
  180. ;        patch    _LVOCloseWorkBench(a0),CLOSEWB(pc)
  181.  
  182.         rts
  183.  
  184. ; mathffp, mathtrans stuff relocated in specific files
  185.  
  186. _CURRENTTIME:                ; added by JOTD
  187.     move.l    sec_timer,(A0)
  188.     move.l    millisec_timer,(A1)
  189.     rts
  190.  
  191. ; AllocRemember (needed by SlamTilt)
  192. ;
  193. ; A0: struct Remember to allocate
  194. ; D0: size
  195. ; D1: flags
  196.  
  197. _ALLOCREMEMBER:
  198.     movem.l    A4-A5,-(A7)
  199.  
  200.     ; search for a spare location (0,xx)
  201.     
  202.     move.l    REMEMBER_TABLE(pc),A4
  203.     move.l    REMEMBER_TOP(pc),A5    
  204.  
  205. .loop
  206.     tst.l    (A4)
  207.     beq.b    .found
  208.  
  209.     addq.l    #8,A4        ; next
  210.     cmp.l    A5,A4
  211.     bcc.b    .fail        ; table full!
  212.  
  213. .found:
  214.  
  215.     ; store size
  216.  
  217.     move.l    D0,(4,A4)
  218.  
  219.     ; perform alloc
  220.  
  221.     move.l    A0,-(A7)
  222.     bsr    ALLOCM
  223.     move.l    (A7)+,A0
  224.  
  225.     ; store allocated pointer
  226.  
  227.     move.l    D0,(A4)
  228.  
  229.     tst.l    D0
  230.     beq.b    .exit
  231.  
  232.     move.l    A4,(A0)    ; A0 = struct Remember **
  233. .exit
  234.     movem.l    (A7)+,A4-A5
  235.     rts
  236.  
  237. .fail        pea    _LVOAllocRemember
  238.         pea    _intname
  239.         bra    _emufail
  240.  
  241. ; <A0: RememberKey
  242. ; <D0:= 0: just clear the structure
  243. ;     !=0: clear struct & free memory
  244.  
  245. _FREEREMEMBER:
  246.     cmp.l    #0,A0
  247.     beq.b    .exit    ; NULL pointer passed
  248.  
  249.     move.l    (A0),A0    ; pointer on the structure
  250.  
  251.     ; check A0 against bounds
  252.  
  253.     cmp.l    REMEMBER_TABLE,A0
  254.     bcs.b    .fail
  255.     cmp.l    REMEMBER_TOP,A0
  256.     bcc.b    .fail
  257.  
  258.     tst.l    D0
  259.     beq.b    .clrstruct
  260.  
  261.     ; free the memory
  262.  
  263.     move.l    (A0),A1
  264.     move.l    (4,A0),D0
  265.  
  266.     move.l    A0,-(A7)
  267.     bsr    FREEM
  268.     move.l    (A7)+,A0
  269.  
  270. .clrstruct
  271.  
  272.     clr.l    (A0)
  273.     clr.l    (4,A0)
  274.  
  275. .exit
  276.     rts
  277.  
  278. .fail        pea    _LVOFreeRemember
  279.         pea    _intname
  280.         bra    _emufail
  281.  
  282.  
  283. REMEMBER_TABLE:
  284.     dc.l    0
  285.  
  286. REMEMBER_TOP:
  287.     dc.l    0
  288.  
  289. prefsdata:
  290.     incbin    "prefsfile"
  291.     cnop    0,4
  292.